{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Using TensorFlow backend.\n"
     ]
    }
   ],
   "source": [
    "from keras.preprocessing.image import ImageDataGenerator\n",
    "from keras.callbacks import ModelCheckpoint,EarlyStopping,ReduceLROnPlateau,TensorBoard\n",
    "from keras.optimizers import Adam\n",
    "from keras import backend as K\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import os"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "def adjust_data(img,mask):\n",
    "    mean_ = np.array([77.79408427,  89.68194542, 101.41694189])\n",
    "    img = (img - mean_) / 255\n",
    "    mask = mask /255\n",
    "    mask[mask > 0.5] = 1\n",
    "    mask[mask <= 0.5] = 0\n",
    "    return (img,mask)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "def make_train_generator():\n",
    "    train_data_root = 'D:/Data/mc_data/train'  # 训练集存放路径\n",
    "\n",
    "    # data augmentation\n",
    "    # data_gen_args = dict(rotation_range=0.2,\n",
    "    #                     width_shift_range=0.05,\n",
    "    #                     height_shift_range=0.05,\n",
    "    #                     shear_range=0.05,\n",
    "    #                     zoom_range=0.05,\n",
    "    #                     horizontal_flip=True,\n",
    "    #                     fill_mode='nearest')\n",
    "    data_gen_args = dict()\n",
    "\n",
    "    train_image_datagen = ImageDataGenerator(**data_gen_args)\n",
    "    train_mask_datagen = ImageDataGenerator(**data_gen_args)\n",
    "\n",
    "    seed=1\n",
    "\n",
    "    train_image_generator = train_image_datagen.flow_from_directory(\n",
    "        train_data_root + '/images',\n",
    "        target_size=(288,288),\n",
    "        class_mode=None,\n",
    "        batch_size=8,\n",
    "        seed=seed,\n",
    "        color_mode='rgb')\n",
    "\n",
    "    train_mask_generator = train_mask_datagen.flow_from_directory(\n",
    "        train_data_root + '/masks',\n",
    "        target_size=(288,288),\n",
    "        class_mode=None,\n",
    "        batch_size=8,\n",
    "        seed=seed,\n",
    "        color_mode='grayscale')\n",
    "\n",
    "    # combine generators into one which yields image and masks\n",
    "    train_generator = zip(train_image_generator, train_mask_generator)\n",
    "    \n",
    "    for (image, mask) in train_generator:\n",
    "#         print(image.shape)\n",
    "#         print(mask.shape)\n",
    "        yield adjust_data(image, mask)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "def make_val_generator():\n",
    "    val_data_root = 'D:/Data/mc_data/val'  # 验证集存放路径\n",
    "    \n",
    "    # data augmentation\n",
    "    # data_gen_args = dict(rotation_range=0.2,\n",
    "    #                     width_shift_range=0.05,\n",
    "    #                     height_shift_range=0.05,\n",
    "    #                     shear_range=0.05,\n",
    "    #                     zoom_range=0.05,\n",
    "    #                     horizontal_flip=True,\n",
    "    #                     fill_mode='nearest')\n",
    "    data_gen_args = dict()\n",
    "\n",
    "    val_image_datagen = ImageDataGenerator(**data_gen_args)\n",
    "    val_mask_datagen = ImageDataGenerator(**data_gen_args)\n",
    "\n",
    "    seed = 1\n",
    "\n",
    "    val_image_generator = val_image_datagen.flow_from_directory(\n",
    "        val_data_root + '/images',\n",
    "        target_size=(288,288),\n",
    "        class_mode=None,\n",
    "        batch_size=8,\n",
    "        seed=seed,\n",
    "        color_mode='rgb')\n",
    "\n",
    "    val_mask_generator = val_mask_datagen.flow_from_directory(\n",
    "        val_data_root + '/masks',\n",
    "        target_size=(288,288),\n",
    "        class_mode=None,\n",
    "        batch_size=8,\n",
    "        seed=seed,\n",
    "        color_mode='grayscale')\n",
    "\n",
    "    val_generator = zip(val_image_generator, val_mask_generator)\n",
    "    \n",
    "    for (image, mask) in val_generator:\n",
    "#         print(image.shape)\n",
    "#         print(mask.shape)\n",
    "        yield adjust_data(image, mask)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "__________________________________________________________________________________________________\n",
      "Layer (type)                    Output Shape         Param #     Connected to                     \n",
      "==================================================================================================\n",
      "image_input (InputLayer)        (None, 288, 288, 3)  0                                            \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_1 (Conv2D)               (None, 144, 144, 64) 9472        image_input[0][0]                \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_1 (BatchNor (None, 144, 144, 64) 256         conv2d_1[0][0]                   \n",
      "__________________________________________________________________________________________________\n",
      "activation_1 (Activation)       (None, 144, 144, 64) 0           batch_normalization_1[0][0]      \n",
      "__________________________________________________________________________________________________\n",
      "max_pooling2d_1 (MaxPooling2D)  (None, 72, 72, 64)   0           activation_1[0][0]               \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_2 (Conv2D)               (None, 72, 72, 64)   4160        max_pooling2d_1[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_2 (BatchNor (None, 72, 72, 64)   256         conv2d_2[0][0]                   \n",
      "__________________________________________________________________________________________________\n",
      "activation_2 (Activation)       (None, 72, 72, 64)   0           batch_normalization_2[0][0]      \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_3 (Conv2D)               (None, 72, 72, 64)   36928       activation_2[0][0]               \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_3 (BatchNor (None, 72, 72, 64)   256         conv2d_3[0][0]                   \n",
      "__________________________________________________________________________________________________\n",
      "activation_3 (Activation)       (None, 72, 72, 64)   0           batch_normalization_3[0][0]      \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_5 (Conv2D)               (None, 72, 72, 256)  16640       max_pooling2d_1[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_4 (Conv2D)               (None, 72, 72, 256)  16640       activation_3[0][0]               \n",
      "__________________________________________________________________________________________________\n",
      "add_1 (Add)                     (None, 72, 72, 256)  0           conv2d_5[0][0]                   \n",
      "                                                                 conv2d_4[0][0]                   \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_4 (BatchNor (None, 72, 72, 256)  1024        add_1[0][0]                      \n",
      "__________________________________________________________________________________________________\n",
      "activation_4 (Activation)       (None, 72, 72, 256)  0           batch_normalization_4[0][0]      \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_6 (Conv2D)               (None, 72, 72, 64)   16448       activation_4[0][0]               \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_5 (BatchNor (None, 72, 72, 64)   256         conv2d_6[0][0]                   \n",
      "__________________________________________________________________________________________________\n",
      "activation_5 (Activation)       (None, 72, 72, 64)   0           batch_normalization_5[0][0]      \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_7 (Conv2D)               (None, 72, 72, 64)   36928       activation_5[0][0]               \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_6 (BatchNor (None, 72, 72, 64)   256         conv2d_7[0][0]                   \n",
      "__________________________________________________________________________________________________\n",
      "activation_6 (Activation)       (None, 72, 72, 64)   0           batch_normalization_6[0][0]      \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_8 (Conv2D)               (None, 72, 72, 256)  16640       activation_6[0][0]               \n",
      "__________________________________________________________________________________________________\n",
      "add_2 (Add)                     (None, 72, 72, 256)  0           add_1[0][0]                      \n",
      "                                                                 conv2d_8[0][0]                   \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_7 (BatchNor (None, 72, 72, 256)  1024        add_2[0][0]                      \n",
      "__________________________________________________________________________________________________\n",
      "activation_7 (Activation)       (None, 72, 72, 256)  0           batch_normalization_7[0][0]      \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_9 (Conv2D)               (None, 72, 72, 64)   16448       activation_7[0][0]               \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_8 (BatchNor (None, 72, 72, 64)   256         conv2d_9[0][0]                   \n",
      "__________________________________________________________________________________________________\n",
      "activation_8 (Activation)       (None, 72, 72, 64)   0           batch_normalization_8[0][0]      \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_10 (Conv2D)              (None, 72, 72, 64)   36928       activation_8[0][0]               \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_9 (BatchNor (None, 72, 72, 64)   256         conv2d_10[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_9 (Activation)       (None, 72, 72, 64)   0           batch_normalization_9[0][0]      \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_11 (Conv2D)              (None, 72, 72, 256)  16640       activation_9[0][0]               \n",
      "__________________________________________________________________________________________________\n",
      "add_3 (Add)                     (None, 72, 72, 256)  0           add_2[0][0]                      \n",
      "                                                                 conv2d_11[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_10 (BatchNo (None, 72, 72, 256)  1024        add_3[0][0]                      \n",
      "__________________________________________________________________________________________________\n",
      "activation_10 (Activation)      (None, 72, 72, 256)  0           batch_normalization_10[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_12 (Conv2D)              (None, 36, 36, 128)  32896       activation_10[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_11 (BatchNo (None, 36, 36, 128)  512         conv2d_12[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_11 (Activation)      (None, 36, 36, 128)  0           batch_normalization_11[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_13 (Conv2D)              (None, 36, 36, 128)  147584      activation_11[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_12 (BatchNo (None, 36, 36, 128)  512         conv2d_13[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_12 (Activation)      (None, 36, 36, 128)  0           batch_normalization_12[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_15 (Conv2D)              (None, 36, 36, 512)  131584      add_3[0][0]                      \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_14 (Conv2D)              (None, 36, 36, 512)  66048       activation_12[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "add_4 (Add)                     (None, 36, 36, 512)  0           conv2d_15[0][0]                  \n",
      "                                                                 conv2d_14[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_13 (BatchNo (None, 36, 36, 512)  2048        add_4[0][0]                      \n",
      "__________________________________________________________________________________________________\n",
      "activation_13 (Activation)      (None, 36, 36, 512)  0           batch_normalization_13[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_16 (Conv2D)              (None, 36, 36, 128)  65664       activation_13[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_14 (BatchNo (None, 36, 36, 128)  512         conv2d_16[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_14 (Activation)      (None, 36, 36, 128)  0           batch_normalization_14[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_17 (Conv2D)              (None, 36, 36, 128)  147584      activation_14[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_15 (BatchNo (None, 36, 36, 128)  512         conv2d_17[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_15 (Activation)      (None, 36, 36, 128)  0           batch_normalization_15[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_18 (Conv2D)              (None, 36, 36, 512)  66048       activation_15[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "add_5 (Add)                     (None, 36, 36, 512)  0           add_4[0][0]                      \n",
      "                                                                 conv2d_18[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_16 (BatchNo (None, 36, 36, 512)  2048        add_5[0][0]                      \n",
      "__________________________________________________________________________________________________\n",
      "activation_16 (Activation)      (None, 36, 36, 512)  0           batch_normalization_16[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_19 (Conv2D)              (None, 36, 36, 128)  65664       activation_16[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_17 (BatchNo (None, 36, 36, 128)  512         conv2d_19[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_17 (Activation)      (None, 36, 36, 128)  0           batch_normalization_17[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_20 (Conv2D)              (None, 36, 36, 128)  147584      activation_17[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_18 (BatchNo (None, 36, 36, 128)  512         conv2d_20[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_18 (Activation)      (None, 36, 36, 128)  0           batch_normalization_18[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_21 (Conv2D)              (None, 36, 36, 512)  66048       activation_18[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "add_6 (Add)                     (None, 36, 36, 512)  0           add_5[0][0]                      \n",
      "                                                                 conv2d_21[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_19 (BatchNo (None, 36, 36, 512)  2048        add_6[0][0]                      \n",
      "__________________________________________________________________________________________________\n",
      "activation_19 (Activation)      (None, 36, 36, 512)  0           batch_normalization_19[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_22 (Conv2D)              (None, 36, 36, 128)  65664       activation_19[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_20 (BatchNo (None, 36, 36, 128)  512         conv2d_22[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_20 (Activation)      (None, 36, 36, 128)  0           batch_normalization_20[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_23 (Conv2D)              (None, 36, 36, 128)  147584      activation_20[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_21 (BatchNo (None, 36, 36, 128)  512         conv2d_23[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_21 (Activation)      (None, 36, 36, 128)  0           batch_normalization_21[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_24 (Conv2D)              (None, 36, 36, 512)  66048       activation_21[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "add_7 (Add)                     (None, 36, 36, 512)  0           add_6[0][0]                      \n",
      "                                                                 conv2d_24[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_22 (BatchNo (None, 36, 36, 512)  2048        add_7[0][0]                      \n",
      "__________________________________________________________________________________________________\n",
      "activation_22 (Activation)      (None, 36, 36, 512)  0           batch_normalization_22[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_25 (Conv2D)              (None, 18, 18, 256)  131328      activation_22[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_23 (BatchNo (None, 18, 18, 256)  1024        conv2d_25[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_23 (Activation)      (None, 18, 18, 256)  0           batch_normalization_23[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_26 (Conv2D)              (None, 18, 18, 256)  590080      activation_23[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_24 (BatchNo (None, 18, 18, 256)  1024        conv2d_26[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_24 (Activation)      (None, 18, 18, 256)  0           batch_normalization_24[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_28 (Conv2D)              (None, 18, 18, 1024) 525312      add_7[0][0]                      \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_27 (Conv2D)              (None, 18, 18, 1024) 263168      activation_24[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "add_8 (Add)                     (None, 18, 18, 1024) 0           conv2d_28[0][0]                  \n",
      "                                                                 conv2d_27[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_25 (BatchNo (None, 18, 18, 1024) 4096        add_8[0][0]                      \n",
      "__________________________________________________________________________________________________\n",
      "activation_25 (Activation)      (None, 18, 18, 1024) 0           batch_normalization_25[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_29 (Conv2D)              (None, 18, 18, 256)  262400      activation_25[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_26 (BatchNo (None, 18, 18, 256)  1024        conv2d_29[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_26 (Activation)      (None, 18, 18, 256)  0           batch_normalization_26[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_30 (Conv2D)              (None, 18, 18, 256)  590080      activation_26[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_27 (BatchNo (None, 18, 18, 256)  1024        conv2d_30[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_27 (Activation)      (None, 18, 18, 256)  0           batch_normalization_27[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_31 (Conv2D)              (None, 18, 18, 1024) 263168      activation_27[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "add_9 (Add)                     (None, 18, 18, 1024) 0           add_8[0][0]                      \n",
      "                                                                 conv2d_31[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_28 (BatchNo (None, 18, 18, 1024) 4096        add_9[0][0]                      \n",
      "__________________________________________________________________________________________________\n",
      "activation_28 (Activation)      (None, 18, 18, 1024) 0           batch_normalization_28[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_32 (Conv2D)              (None, 18, 18, 256)  262400      activation_28[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_29 (BatchNo (None, 18, 18, 256)  1024        conv2d_32[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_29 (Activation)      (None, 18, 18, 256)  0           batch_normalization_29[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_33 (Conv2D)              (None, 18, 18, 256)  590080      activation_29[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_30 (BatchNo (None, 18, 18, 256)  1024        conv2d_33[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_30 (Activation)      (None, 18, 18, 256)  0           batch_normalization_30[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_34 (Conv2D)              (None, 18, 18, 1024) 263168      activation_30[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "add_10 (Add)                    (None, 18, 18, 1024) 0           add_9[0][0]                      \n",
      "                                                                 conv2d_34[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_31 (BatchNo (None, 18, 18, 1024) 4096        add_10[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "activation_31 (Activation)      (None, 18, 18, 1024) 0           batch_normalization_31[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_35 (Conv2D)              (None, 18, 18, 256)  262400      activation_31[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_32 (BatchNo (None, 18, 18, 256)  1024        conv2d_35[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_32 (Activation)      (None, 18, 18, 256)  0           batch_normalization_32[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_36 (Conv2D)              (None, 18, 18, 256)  590080      activation_32[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_33 (BatchNo (None, 18, 18, 256)  1024        conv2d_36[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_33 (Activation)      (None, 18, 18, 256)  0           batch_normalization_33[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_37 (Conv2D)              (None, 18, 18, 1024) 263168      activation_33[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "add_11 (Add)                    (None, 18, 18, 1024) 0           add_10[0][0]                     \n",
      "                                                                 conv2d_37[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_34 (BatchNo (None, 18, 18, 1024) 4096        add_11[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "activation_34 (Activation)      (None, 18, 18, 1024) 0           batch_normalization_34[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_38 (Conv2D)              (None, 18, 18, 256)  262400      activation_34[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_35 (BatchNo (None, 18, 18, 256)  1024        conv2d_38[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_35 (Activation)      (None, 18, 18, 256)  0           batch_normalization_35[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_39 (Conv2D)              (None, 18, 18, 256)  590080      activation_35[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_36 (BatchNo (None, 18, 18, 256)  1024        conv2d_39[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_36 (Activation)      (None, 18, 18, 256)  0           batch_normalization_36[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_40 (Conv2D)              (None, 18, 18, 1024) 263168      activation_36[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "add_12 (Add)                    (None, 18, 18, 1024) 0           add_11[0][0]                     \n",
      "                                                                 conv2d_40[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_37 (BatchNo (None, 18, 18, 1024) 4096        add_12[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "activation_37 (Activation)      (None, 18, 18, 1024) 0           batch_normalization_37[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_41 (Conv2D)              (None, 18, 18, 256)  262400      activation_37[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_38 (BatchNo (None, 18, 18, 256)  1024        conv2d_41[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_38 (Activation)      (None, 18, 18, 256)  0           batch_normalization_38[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_42 (Conv2D)              (None, 18, 18, 256)  590080      activation_38[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_39 (BatchNo (None, 18, 18, 256)  1024        conv2d_42[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_39 (Activation)      (None, 18, 18, 256)  0           batch_normalization_39[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_43 (Conv2D)              (None, 18, 18, 1024) 263168      activation_39[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "add_13 (Add)                    (None, 18, 18, 1024) 0           add_12[0][0]                     \n",
      "                                                                 conv2d_43[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_40 (BatchNo (None, 18, 18, 1024) 4096        add_13[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "activation_40 (Activation)      (None, 18, 18, 1024) 0           batch_normalization_40[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_44 (Conv2D)              (None, 9, 9, 512)    524800      activation_40[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_41 (BatchNo (None, 9, 9, 512)    2048        conv2d_44[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_41 (Activation)      (None, 9, 9, 512)    0           batch_normalization_41[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_45 (Conv2D)              (None, 9, 9, 512)    2359808     activation_41[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_42 (BatchNo (None, 9, 9, 512)    2048        conv2d_45[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_42 (Activation)      (None, 9, 9, 512)    0           batch_normalization_42[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_47 (Conv2D)              (None, 9, 9, 2048)   2099200     add_13[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_46 (Conv2D)              (None, 9, 9, 2048)   1050624     activation_42[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "add_14 (Add)                    (None, 9, 9, 2048)   0           conv2d_47[0][0]                  \n",
      "                                                                 conv2d_46[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_43 (BatchNo (None, 9, 9, 2048)   8192        add_14[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "activation_43 (Activation)      (None, 9, 9, 2048)   0           batch_normalization_43[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_48 (Conv2D)              (None, 9, 9, 512)    1049088     activation_43[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_44 (BatchNo (None, 9, 9, 512)    2048        conv2d_48[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_44 (Activation)      (None, 9, 9, 512)    0           batch_normalization_44[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_49 (Conv2D)              (None, 9, 9, 512)    2359808     activation_44[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_45 (BatchNo (None, 9, 9, 512)    2048        conv2d_49[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_45 (Activation)      (None, 9, 9, 512)    0           batch_normalization_45[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_50 (Conv2D)              (None, 9, 9, 2048)   1050624     activation_45[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "add_15 (Add)                    (None, 9, 9, 2048)   0           add_14[0][0]                     \n",
      "                                                                 conv2d_50[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_46 (BatchNo (None, 9, 9, 2048)   8192        add_15[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "activation_46 (Activation)      (None, 9, 9, 2048)   0           batch_normalization_46[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_51 (Conv2D)              (None, 9, 9, 512)    1049088     activation_46[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_47 (BatchNo (None, 9, 9, 512)    2048        conv2d_51[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_47 (Activation)      (None, 9, 9, 512)    0           batch_normalization_47[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_52 (Conv2D)              (None, 9, 9, 512)    2359808     activation_47[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization_48 (BatchNo (None, 9, 9, 512)    2048        conv2d_52[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "activation_48 (Activation)      (None, 9, 9, 512)    0           batch_normalization_48[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_53 (Conv2D)              (None, 9, 9, 2048)   1050624     activation_48[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "add_16 (Add)                    (None, 9, 9, 2048)   0           add_15[0][0]                     \n",
      "                                                                 conv2d_53[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_54 (Conv2D)              (None, 9, 9, 2048)   37750784    add_16[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_55 (Conv2D)              (None, 9, 9, 2048)   37750784    conv2d_54[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "concatenate_1 (Concatenate)     (None, 9, 9, 4096)   0           conv2d_55[0][0]                  \n",
      "                                                                 add_16[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_transpose_1 (Conv2DTrans (None, 18, 18, 512)  18874880    concatenate_1[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_56 (Conv2D)              (None, 18, 18, 512)  2359808     conv2d_transpose_1[0][0]         \n",
      "__________________________________________________________________________________________________\n",
      "concatenate_2 (Concatenate)     (None, 18, 18, 1536) 0           conv2d_56[0][0]                  \n",
      "                                                                 add_13[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_transpose_2 (Conv2DTrans (None, 36, 36, 256)  3539200     concatenate_2[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_57 (Conv2D)              (None, 36, 36, 256)  590080      conv2d_transpose_2[0][0]         \n",
      "__________________________________________________________________________________________________\n",
      "concatenate_3 (Concatenate)     (None, 36, 36, 768)  0           conv2d_57[0][0]                  \n",
      "                                                                 add_7[0][0]                      \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_transpose_3 (Conv2DTrans (None, 72, 72, 128)  884864      concatenate_3[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_58 (Conv2D)              (None, 72, 72, 128)  147584      conv2d_transpose_3[0][0]         \n",
      "__________________________________________________________________________________________________\n",
      "concatenate_4 (Concatenate)     (None, 72, 72, 384)  0           conv2d_58[0][0]                  \n",
      "                                                                 add_3[0][0]                      \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_transpose_4 (Conv2DTrans (None, 144, 144, 64) 221248      concatenate_4[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_59 (Conv2D)              (None, 144, 144, 64) 36928       conv2d_transpose_4[0][0]         \n",
      "__________________________________________________________________________________________________\n",
      "concatenate_5 (Concatenate)     (None, 144, 144, 128 0           conv2d_59[0][0]                  \n",
      "                                                                 activation_1[0][0]               \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_transpose_5 (Conv2DTrans (None, 288, 288, 32) 36896       concatenate_5[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_60 (Conv2D)              (None, 288, 288, 32) 9248        conv2d_transpose_5[0][0]         \n",
      "__________________________________________________________________________________________________\n",
      "conv2d_61 (Conv2D)              (None, 288, 288, 1)  289         conv2d_60[0][0]                  \n",
      "==================================================================================================\n",
      "Total params: 125,766,753\n",
      "Trainable params: 125,725,409\n",
      "Non-trainable params: 41,344\n",
      "__________________________________________________________________________________________________\n"
     ]
    }
   ],
   "source": [
    "from rssegnet import RSSegResNet\n",
    "model = RSSegResNet.build_resnet_50((3,288,288),1)\n",
    "model.compile(loss='binary_crossentropy', optimizer=Adam(), metrics=['accuracy'])\n",
    "model.summary()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 1/300\n",
      "Found 220453 images belonging to 1 classes.\n",
      "Found 220453 images belonging to 1 classes.\n",
      " 9999/10000 [============================>.] - ETA: 0s - loss: 0.3117 - acc: 0.9092Found 60317 images belonging to 1 classes.\n",
      "Found 60317 images belonging to 1 classes.\n",
      "10000/10000 [==============================] - 6311s 631ms/step - loss: 0.3117 - acc: 0.9092 - val_loss: 0.2195 - val_acc: 0.9306\n",
      "Epoch 2/300\n",
      "10000/10000 [==============================] - 6233s 623ms/step - loss: 0.2044 - acc: 0.9324 - val_loss: 0.1884 - val_acc: 0.9361\n",
      "Epoch 3/300\n",
      "10000/10000 [==============================] - 6240s 624ms/step - loss: 0.1870 - acc: 0.9377 - val_loss: 0.1961 - val_acc: 0.9352\n",
      "Epoch 4/300\n",
      "10000/10000 [==============================] - 6261s 626ms/step - loss: 0.1781 - acc: 0.9403 - val_loss: 0.1963 - val_acc: 0.9315\n",
      "Epoch 5/300\n",
      "10000/10000 [==============================] - 6261s 626ms/step - loss: 0.1753 - acc: 0.9412 - val_loss: 0.1678 - val_acc: 0.9436\n",
      "Epoch 6/300\n",
      "10000/10000 [==============================] - 6260s 626ms/step - loss: 0.1726 - acc: 0.9422 - val_loss: 0.1608 - val_acc: 0.9451\n",
      "Epoch 7/300\n",
      "10000/10000 [==============================] - 6258s 626ms/step - loss: 0.1689 - acc: 0.9432 - val_loss: 0.1766 - val_acc: 0.9387\n",
      "Epoch 8/300\n",
      "10000/10000 [==============================] - 6257s 626ms/step - loss: 0.1676 - acc: 0.9436 - val_loss: 0.2027 - val_acc: 0.9293\n",
      "Epoch 9/300\n",
      "10000/10000 [==============================] - 6255s 626ms/step - loss: 0.1650 - acc: 0.9444 - val_loss: 0.1518 - val_acc: 0.9491\n",
      "Epoch 10/300\n",
      "10000/10000 [==============================] - 6257s 626ms/step - loss: 0.1649 - acc: 0.9444 - val_loss: 0.1592 - val_acc: 0.9452\n",
      "Epoch 11/300\n",
      "10000/10000 [==============================] - 6257s 626ms/step - loss: 0.1631 - acc: 0.9450 - val_loss: 0.1790 - val_acc: 0.9376\n",
      "Epoch 12/300\n",
      "10000/10000 [==============================] - 6258s 626ms/step - loss: 0.1622 - acc: 0.9452 - val_loss: 0.2162 - val_acc: 0.9253\n",
      "Epoch 13/300\n",
      "10000/10000 [==============================] - 6228s 623ms/step - loss: 0.1389 - acc: 0.9530 - val_loss: 0.1328 - val_acc: 0.9553\n",
      "Epoch 14/300\n",
      "10000/10000 [==============================] - 6217s 622ms/step - loss: 0.1327 - acc: 0.9543 - val_loss: 0.1292 - val_acc: 0.9547\n",
      "Epoch 15/300\n",
      "10000/10000 [==============================] - 6211s 621ms/step - loss: 0.1286 - acc: 0.9552 - val_loss: 0.1273 - val_acc: 0.9549\n",
      "Epoch 16/300\n",
      "10000/10000 [==============================] - 6207s 621ms/step - loss: 0.1258 - acc: 0.9557 - val_loss: 0.1181 - val_acc: 0.9588\n",
      "Epoch 17/300\n",
      "10000/10000 [==============================] - 6233s 623ms/step - loss: 0.1242 - acc: 0.9560 - val_loss: 0.1283 - val_acc: 0.9549\n",
      "Epoch 18/300\n",
      "10000/10000 [==============================] - 6261s 626ms/step - loss: 0.1224 - acc: 0.9563 - val_loss: 0.1200 - val_acc: 0.9569\n",
      "Epoch 19/300\n",
      "10000/10000 [==============================] - 6263s 626ms/step - loss: 0.1218 - acc: 0.9564 - val_loss: 0.1388 - val_acc: 0.9485\n",
      "Epoch 20/300\n",
      "10000/10000 [==============================] - 6261s 626ms/step - loss: 0.1173 - acc: 0.9580 - val_loss: 0.1156 - val_acc: 0.9594\n",
      "Epoch 21/300\n",
      "10000/10000 [==============================] - 6260s 626ms/step - loss: 0.1162 - acc: 0.9584 - val_loss: 0.1167 - val_acc: 0.9575\n",
      "Epoch 22/300\n",
      "10000/10000 [==============================] - 6261s 626ms/step - loss: 0.1165 - acc: 0.9581 - val_loss: 0.1223 - val_acc: 0.9566\n",
      "Epoch 23/300\n",
      "10000/10000 [==============================] - 6259s 626ms/step - loss: 0.1158 - acc: 0.9584 - val_loss: 0.1120 - val_acc: 0.9595\n",
      "Epoch 24/300\n",
      "10000/10000 [==============================] - 6261s 626ms/step - loss: 0.1153 - acc: 0.9585 - val_loss: 0.1175 - val_acc: 0.9569\n",
      "Epoch 25/300\n",
      "10000/10000 [==============================] - 6260s 626ms/step - loss: 0.1156 - acc: 0.9585 - val_loss: 0.1103 - val_acc: 0.9602\n",
      "Epoch 26/300\n",
      "10000/10000 [==============================] - 6261s 626ms/step - loss: 0.1148 - acc: 0.9587 - val_loss: 0.1161 - val_acc: 0.9575\n",
      "Epoch 27/300\n",
      "10000/10000 [==============================] - 6261s 626ms/step - loss: 0.1153 - acc: 0.9584 - val_loss: 0.1210 - val_acc: 0.9561\n",
      "Epoch 28/300\n",
      "10000/10000 [==============================] - 6218s 622ms/step - loss: 0.1142 - acc: 0.9588 - val_loss: 0.1094 - val_acc: 0.9604\n",
      "Epoch 29/300\n",
      "10000/10000 [==============================] - 6211s 621ms/step - loss: 0.1146 - acc: 0.9586 - val_loss: 0.1184 - val_acc: 0.9565\n",
      "Epoch 30/300\n",
      "10000/10000 [==============================] - 6211s 621ms/step - loss: 0.1141 - acc: 0.9589 - val_loss: 0.1187 - val_acc: 0.9576\n",
      "Epoch 31/300\n",
      "10000/10000 [==============================] - 6249s 625ms/step - loss: 0.1140 - acc: 0.9588 - val_loss: 0.1057 - val_acc: 0.9620\n",
      "Epoch 32/300\n",
      "10000/10000 [==============================] - 6271s 627ms/step - loss: 0.1134 - acc: 0.9590 - val_loss: 0.1221 - val_acc: 0.9557\n",
      "Epoch 33/300\n",
      "10000/10000 [==============================] - 6264s 626ms/step - loss: 0.1139 - acc: 0.9588 - val_loss: 0.1163 - val_acc: 0.9581\n",
      "Epoch 34/300\n",
      "10000/10000 [==============================] - 6258s 626ms/step - loss: 0.1132 - acc: 0.9591 - val_loss: 0.1221 - val_acc: 0.9560\n",
      "Epoch 35/300\n",
      "10000/10000 [==============================] - 6262s 626ms/step - loss: 0.1129 - acc: 0.9591 - val_loss: 0.1186 - val_acc: 0.9574\n",
      "Epoch 36/300\n",
      "10000/10000 [==============================] - 6263s 626ms/step - loss: 0.1137 - acc: 0.9589 - val_loss: 0.1237 - val_acc: 0.9572\n",
      "Epoch 37/300\n",
      "10000/10000 [==============================] - 6259s 626ms/step - loss: 0.1128 - acc: 0.9592 - val_loss: 0.1118 - val_acc: 0.9595\n",
      "Epoch 38/300\n",
      "10000/10000 [==============================] - 6261s 626ms/step - loss: 0.1128 - acc: 0.9592 - val_loss: 0.1081 - val_acc: 0.9604\n",
      "Epoch 39/300\n",
      "10000/10000 [==============================] - 6262s 626ms/step - loss: 0.1129 - acc: 0.9592 - val_loss: 0.1104 - val_acc: 0.9602\n",
      "Epoch 40/300\n",
      "10000/10000 [==============================] - 6262s 626ms/step - loss: 0.1128 - acc: 0.9592 - val_loss: 0.1095 - val_acc: 0.9603\n",
      "Epoch 41/300\n",
      "10000/10000 [==============================] - 6264s 626ms/step - loss: 0.1132 - acc: 0.9590 - val_loss: 0.1126 - val_acc: 0.9588\n",
      "Epoch 42/300\n",
      "10000/10000 [==============================] - 6222s 622ms/step - loss: 0.1124 - acc: 0.9594 - val_loss: 0.1124 - val_acc: 0.9595\n",
      "Epoch 43/300\n",
      "10000/10000 [==============================] - 6217s 622ms/step - loss: 0.1130 - acc: 0.9591 - val_loss: 0.1142 - val_acc: 0.9586\n",
      "Epoch 44/300\n",
      "10000/10000 [==============================] - 6216s 622ms/step - loss: 0.1127 - acc: 0.9592 - val_loss: 0.1113 - val_acc: 0.9600\n",
      "Epoch 45/300\n",
      "10000/10000 [==============================] - 6260s 626ms/step - loss: 0.1125 - acc: 0.9593 - val_loss: 0.1171 - val_acc: 0.9577\n",
      "Epoch 46/300\n",
      "10000/10000 [==============================] - 6181s 618ms/step - loss: 0.1128 - acc: 0.9592 - val_loss: 0.1148 - val_acc: 0.9586\n",
      "Epoch 47/300\n",
      "10000/10000 [==============================] - 6269s 627ms/step - loss: 0.1132 - acc: 0.9591 - val_loss: 0.1117 - val_acc: 0.9597\n"
     ]
    }
   ],
   "source": [
    "callback_list = [\n",
    "    EarlyStopping(\n",
    "        monitor='acc',\n",
    "        patience=5,\n",
    "    ),\n",
    "    ModelCheckpoint(\n",
    "        filepath='building_seg_resnet50_bce_0821.h5',\n",
    "        monitor='val_loss',\n",
    "        save_best_only=True,\n",
    "    ),\n",
    "    ReduceLROnPlateau(\n",
    "        monitor='val_loss',\n",
    "        factor=0.1,\n",
    "        patience=3,\n",
    "    ),\n",
    "    TensorBoard(\n",
    "        log_dir = 'logs'\n",
    "    ),\n",
    "]\n",
    "\n",
    "history = model.fit_generator(make_train_generator(),\n",
    "                              epochs=300,\n",
    "                              steps_per_epoch=10000,\n",
    "                              validation_data=make_val_generator(),\n",
    "                              validation_steps=50,\n",
    "                              callbacks=callback_list,\n",
    "                              verbose=1)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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2rRJTiBjLdE891jC/tvfRv8nj2ZD48aR//l79459rkTF7qc/ddf0+OOJCa5q4r13ItUH7s3l+++j/77J9hKKJeCJ9lRKpr4JE9z1Pfyw60V1003OOUlLcw222dmp6fkUCRN9o0a49Vb3V/XFF6rTp7vtadNSf55Ysd1Y3mqiXnaLFm4d/jbQsGHFHmT//geKs2p0Ibzxxsj//G++6fIjhUL8Op94ouztqiJxmjHDlXvzzcj39sYby5/nllsq91uFd6Ns0sSFAOsj+/apnnaau0b/7/DCC1VXrqz6c5voG9XOzp2uB8OZZ7r9khL3NeVxx6nu35/ac8WKg4bG+uP1sg8+OLKAP/64as+erldOp05leZMmOTtieWjr17vjevdWLSoqb3/ocU2auIboffsiX+v+/ao5Oa6RMDRs4J9r2TLVQYPif8Du2OEeIDfccGDexo2ucbNHD/fNwpFHOvH68suK692yxT0w/vAH1SlTVD/4wNXn//a33OJsnDKl4rrqMps2qR51lHujmjev+s5rom9UOw895P6i3n67LO0f/3BpqRqiwGfq1Mh9r0M93FatyvJOPNF16YzkZaenx+5P/skn7lxnnOEeJmPGxG/nq6+6BsF27SIPC1BYWP4hEut6ofyHY3v2uI+5mjRxjeaPPBL/w/UnP3HfF4Syf7/qz37m6issdGnLlrkHV8+eqsXF0etbsED10ENdGCo8FNWypWq/fu6+jhoVn31G4pjoG9XKvn3uQ6Vjjy0vPDt2ONEYPjz28VOnlnWfizfeedhhTrBjxUHXr3cebUaGK3f++U4o27bV0vBNPPHTm24qe0CEe+0VsXChE8S0NPfmEMoVVziR3bw5dh179rh48KBBbn/ePOf9g7u369YlZtOkSe5Yv4urquuxAuXH61FVfestFzo6/XT39hbOs8+6+9u+vfPud+924b2XXnIN+Vdd5UIeF1wQO45vVA4TfaNaefFF99f01FMH5t18sxPcFSsiHxutl0SshsUnn3T918eOjc++jRtd7wq/G17r1k5Ev/suvuN373av6xV55NHYvFn11FPdua+5xjVuFxc7ey65JL46fKG++GL35tGunerzzydnj9+tdvJkt//pp+6hdOaZkd8W/Le4664rSyspKYv//+hHiT94jNRiom9UKwMHupj3nj0H5q1d68IiY8dG9tqjffkYq++1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hg0bUlJSErHuJk2aHFAmnlkFd+7cydixY5k+fToLFixg1KhRpXZE6lqpqjXeJdZE3zCMpBg5EiZPhi5dQMStJ09OvhE3EbZv307z5s1p0aIF69ev57XXXkv5OQYMGMC0adMAWLhwYcQ3iV27dtGgQQOysrL47rvveP755wFo3bo1WVlZzJgxA3Afve3cuZPBgwfzr3/9i127dgHw7bffptzuirDeO4ZhJM3IkdUj8uH069ePnj170qtXLw499FBOPPHElJ/j6quv5pe//CW9e/emX79+9OrVi5YtW5Yrk5mZySWXXEKvXr3o0qULxx13XGlefn4+l19+OePHjyctLY3nn3+eM844g8LCQnJzc2ncuDFnnnkmf/zjH1NueyxsYnTDMEpZsmQJPXr0qGkzagUlJSWUlJSQnp7O8uXLGTx4MMuXL6dRo5r3lSP9TvFOjF7z1huGYdRCduzYwamnnkpJSQmqysMPP1wrBL+y1P0rMAzDqAJatWrFvHnzatqMlGMNuYZhGAHCRN8wDCNAmOgbhmEECBN9wzCMAGGibxhGrWHQoEEHfGh133338Zvf/Cbmcc2aNQNg3bp1nHvuuVHrrqg7+H333cfOkFHkfvazn7Ft27Z4TK8zmOgbhlFrGDFiBM8880y5tGeeeYYRI0bEdXyHDh147rnnkj5/uOi/8sortGrVKun6aiNxddkUkSHA34CGwKOqendYfhfgMaAN8C1wkaoWeXkzgeOB91T1jBTabhhGFXLttRBhJOFKkZMD3ojGETn33HO55ZZb+OGHH2jSpAmrV69m3bp1DBgwgB07djBs2DC2bt3K3r17ueOOOxg2bFi541evXs0ZZ5zB559/zq5du7jssstYvHgxPXr0KB36AODKK69k7ty57Nq1i3PPPZf/+7//4/7772fdunWcfPLJZGVlMXv2bLp27UpBQQFZWVnce++9paN0jh49mmuvvZbVq1dz+umnM2DAAD744AM6duzI//73v9IB1XxmzJjBHXfcwZ49e8jMzCQ/P5+2bduyY8cOrr76agoKChARbrvtNs455xxmzpzJzTffzL59+8jKymLWrFkp+w0qFH0RaQg8APwUKALmisiLqho6EMUk4AlVnSIipwB3ARd7efcAGcDlKbPaMIx6SWZmJnl5ecycOZNhw4bxzDPPcP755yMipKenM336dFq0aMHmzZs5/vjjGTp0aNQBzB588EEyMjJYsGABCxYsoF+/fqV5EydO5OCDD2bfvn2ceuqpLFiwgN/+9rfce++9zJ49m6ysrHJ1zZs3j8cff5yPP/4YVeW4445j4MCBtG7dmuXLl/P000/zyCOPcN555/H8889z0UUXlTt+wIABfPTRR4gIjz76KH/+85/5y1/+wh//+EdatmzJwoULAdi6dSubNm3i17/+NXPmzKFbt24pH58nHk8/D1ihqisBROQZYBgQKvo9geu87dnAC36Gqs4SkUEpsdYwjGojlkdelfghHl/0fe9aVbn55puZM2cODRo0YO3atWzYsIF27dpFrGfOnDn89re/BaB379707t27NG/atGlMnjyZkpIS1q9fz+LFi8vlh/Pee+9x9tlnl470OXz4cN59912GDh1Kt27dyMnJAaIP31xUVMT555/P+vXr2bNnD926dQPgzTffLBfOat26NTNmzODHP/5xaZlUD78cT0y/I/B1yH6RlxZKIXCOt3020FxEMuM1QkTGiEiBiBRs2rQp3sPKkeq5Og3DqBnOOussZs2axaeffsquXbtKPfT8/Hw2bdrEvHnz+Oyzz2jbtm3E4ZRDifQWsGrVKiZNmsSsWbNYsGABP//5zyusJ9YYZf6wzBB9+Oarr76asWPHsnDhQh5++OHS80Uaarmqh1+OR/QjnT38DtwADBSR+cBAYC0QeeDqSJWpTlbVXFXNbdOmTbyHleLP1fnVV6BaNlenCb9h1D2aNWvGoEGDGDVqVLkG3OLiYg455BAaN27M7Nmz+eqrr2LW8+Mf/7h08vPPP/+cBQsWAG5Y5oMOOoiWLVuyYcMGXn311dJjmjdvznfffRexrhdeeIGdO3fy/fffM336dE466aS4r6m4uJiOHZ2vPGXKlNL0wYMH849//KN0f+vWrZxwwgm88847rFq1Ckj98MvxiH4R0ClkPxtYF1pAVdep6nBV7QuM99KKU2ZlBVTnXJ2GYVQ9I0aMoLCwsHTmKoCRI0dSUFBAbm4u+fn5HHXUUTHruPLKK9mxYwe9e/fmz3/+M3l5eYCbBatv374cffTRjBo1qtywzGPGjOH000/n5JNPLldXv379uPTSS8nLy+O4445j9OjR9O3bN+7ruf322/nFL37BSSedVK694JZbbmHr1q306tWLPn36MHv2bNq0acPkyZMZPnw4ffr04fzzz4/7PPFQ4dDKItIIWAacivPg5wIXquqikDJZwLequl9EJgL7VPXWkPxBwA3x9N5JZmjlBg2ch3+g7bB/f0JVGUagsaGV6waVGVq5Qk9fVUuAscBrwBJgmqouEpEJIjLUKzYIWCoiy4C2QOmEaSLyLvAf4FQRKRKR0+K7rPip7rk6DcMw6ipx9dNX1VeAV8LSbg3Zfg6I+EWEqsYf+EqSiRNdDD80xFOVc3UahmHUVerFF7k1OVenYdQ3attsekZ5Kvv71JtJVGpqrk7DqE+kp6ezZcsWMjMzq7TboJEcqsqWLVtIT09Puo56I/qGYVSe7OxsioqKSPZ7GaPqSU9PJzs7O+njTfQNwyilcePGpV+CGvWTehHTNwzDMOLDRN8wDCNAmOgbhmEEiAq/yK1uRGQTEHtQDcgCNleDObUduw8Ouw9l2L1wBPE+dFHVCgcvq3WiHw8iUhDP58b1HbsPDrsPZdi9cNh9iI6FdwzDMAKEib5hGEaAqKuiP7mmDagl2H1w2H0ow+6Fw+5DFOpkTN8wDMNIjrrq6RuGYRhJYKJvGIYRIOqc6IvIEBFZKiIrRGRcTdtTXYjIYyKyUUQ+D0k7WETeEJHl3rp1TdpYHYhIJxGZLSJLRGSRiFzjpQfqXohIuoh8IiKF3n34Py+9m4h87N2HZ0UkraZtrQ5EpKGIzBeRl7z9QN6HeKhToi8iDYEHgNOBnsAIEelZs1ZVG/8GhoSljQNmqWp3YJa3X98pAa5X1R7A8cBV3t9A0O7FD8ApqtoHyAGGiMjxwJ+Av3r3YSvwqxq0sTq5Bjezn09Q70OF1CnRB/KAFaq6UlX3AM8Aw2rYpmpBVecA34YlDwOmeNtTgLOq1agaQFXXq+qn3vZ3uH/0jgTsXqhjh7fb2FsUOIWyWezq/X0AEJFs4OfAo96+EMD7EC91TfQ7Al+H7Bd5aUGlraquByeGwCE1bE+1IiJdgb7AxwTwXnghjc+AjcAbwJfANm9eawjO/8d9wO+B/d5+JsG8D3FR10Q/0lQ+1uc0gIhIM+B54FpV3V7T9tQEqrpPVXOAbNxbcI9IxarXqupFRM4ANqrqvNDkCEXr9X1IhLo2iUoR0ClkPxtYV0O21AY2iEh7VV0vIu1xHl+9R0Qa4wQ/X1X/6yUH8l4AqOo2EXkb18bRSkQaeV5uEP4/TgSGisjPgHSgBc7zD9p9iJu65unPBbp7LfNpwAXAizVsU03yInCJt30J8L8atKVa8OK1/wKWqOq9IVmBuhci0kZEWnnbTYGf4No3ZgPnesXq/X1Q1ZtUNVtVu+L04C1VHUnA7kMi1Lkvcr0n+n1AQ+AxVZ1YwyZVCyLyNDAIN2TsBuA24AVgGtAZWAP8QlXDG3vrFSIyAHgXWEhZDPdmXFw/MPdCRHrjGigb4py3aao6QUQOxXVwOBiYD1ykqj/UnKXVh4gMAm5Q1TOCfB8qos6JvmEYhpE8dS28YxiGYVQCE33DMIwAYaJvGIYRIEz0DcMwAoSJvmEYRoAw0TcMwwgQJvqGYRgB4v8DpkTU2C+eZiQAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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xsTVqFGjePPNN/nxxx8ByM/PZ+vWrQwcOLCk33x2djbHH388b7zxRoX18/Pz6dmzJwAHDhxg9OjRZGVlceGFF3LgwIGS5a677rqSYZnvueceAKZNm8bWrVs55ZRTOOWUUwDo1KkTO3bsAODhhx+mZ8+e9OzZs2RY5vz8fLp168bVV19Njx49GDZsWJn9BLNixQr69+9PVlYW5557Lt9//33J/rt3705WVlbJQG//+te/Sh4i07t3b/bs2VPlYxtMYt11YIyplptvhlg/EKpXL/DFy6DS09Pp27cvc+fO5eyzz2bWrFlceOGFiAipqam89tprNG/enB07dtC/f39GjhwZ8jmxTz75JGlpaaxcuZKVK1eSnZ1d8t2kSZM44ogjKCoq4tRTT2XlypX86le/4uGHH2bBggW0bt26zLaWLl3Kc889x6JFi1BV+vXrx+DBg2nVqhXr169n5syZ/OUvf+EXv/gFr776atjx8S+99FIee+wxBg8ezN133819993H1KlTmTx5Mps2bSIlJaUkpfTQQw/xxBNPcNJJJ7F3715SU1OjONqVs5q+MSbuAlM8gakdVeWOO+4gKyuL0047ja+//ppvvvkm5HYWLlxYEnyzsrLIysoq+W727NlkZ2fTu3dvVq1aVelgah999BHnnnsuTZo0oWnTppx33nl8+OGHAHTu3JlevXoB4YdvBje+/65duxg8eDAAl112GQsXLiwp49ixY8nNzS258/ekk07i1ltvZdq0aezatSvmdwRbTd8YUyJcjbwmnXPOOdx6660sW7aMAwcOlNTQZ8yYwfbt21m6dCnJycl06tQp6HDKgYJdBWzatImHHnqIxYsX06pVKy6//PJKtxNuXDL/sMzghmauLL0TyltvvcXChQuZM2cOv//971m1ahXjx4/nzDPP5O2336Z///689957HHfccVXafjBW0zfGxF3Tpk0ZMmQIv/zlL8s04O7evZs2bdqQnJzMggUL2BzsYdgBBg0aVPLw8y+++IKVK1cCbljmJk2a0KJFC7755hveeae0T0mzZs2C5s0HDRrE66+/zv79+9m3bx+vvfYaJ598ctS/rUWLFrRq1arkKuHFF19k8ODBFBcX89VXX3HKKacwZcoUdu3axd69e/nyyy85/vjjuf3228nJyWHt2rVR7zMcq+kbY+qEMWPGcN5555XpyTN27FjO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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "acc = history.history['acc']\n",
    "val_acc = history.history['val_acc']\n",
    "loss = history.history['loss']\n",
    "val_loss = history.history['val_loss']\n",
    "epochs = range(1, len(acc) + 1)\n",
    "plt.plot(epochs, acc, 'bo', label='Training acc')\n",
    "plt.plot(epochs, val_acc, 'b', label='Validation acc')\n",
    "plt.title('Training and validation accuracy')\n",
    "plt.legend()\n",
    "plt.figure()\n",
    "plt.plot(epochs, loss, 'bo', label='Training loss')\n",
    "plt.plot(epochs, val_loss, 'b', label='Validation loss')\n",
    "plt.title('Training and validation loss')\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
